Artificial intelligence (AI) technology is a discipline with an ultimate goal of providing a machine that is capable of reasoning, making inferences and following rules in a manner believed to model the human mind. Artificial intelligence provides relatively untrained users sophisticated computer power to solve practical problems such as to assist in the analysis of massive amounts of relatively unprocessed data to aid in decision-making processes.
As AI technology begins to demonstrate potential and practical uses, tools are needed to speed development of practical computational systems. AI specialists have developed a number of AI-dedicated computer languages to assist in this development. Among the languages are LISP and PROLOG. However, these languages are not particularly easy for either skilled AI researchers or minimally-trained user/programmers to use to develop sophisticated and complex knowledge bases necessary to solve the problems related to artificial intelligence applications.
Over the years, various attempts have been made to develop commercially useful knowledge representation languages. Among the efforts have been FRL (Frame Representation Language), KRL (Knowledge Representation Language), KL-ONE, NIKL, SMALLTALK, STROBE, UNITS, KEE, ART, Knowledge Craft, and Laser.
In the field of artificial intelligence "knowledge" is a combination of data structures and interpretive procedures which, if suitably manipulated, will lead to what might best be termed "knowledgeable" behavior. A knowledge base is a set of knowledge representations which describes a domain of knowledge. A knowledge base is to an artificial intelligence environment what a database is to a conventional computer program. Unlike a database, however, a knowledge base can include executable program material within a defined record herein called a slot. One type or category of representing knowledge is descriptive knowledge. This category is the collection and classification of facts and categorizations about an idea or entity which might be acted upon. The basic units of descriptive knowledge are generally called frames. A frame contains one or more slots.
As used herein, slots embody the attribute, relationship, and procedural information of the object or concept which is being represented. A collection of slots is a frame which is an atomic unit of knowledge. Two types of frames are provided herein: class and instance. A class frame is used to represent a generalized type or category of object. An instance is used to represent a particular member of a class.
Three types of slots are provided herein: attribute, relation, and message. Attribute slots are used to store values (e.g. integer numbers, character strings, etc.) Relation slots are used to store user-defined links between frames in the knowledge base. Message slots are used to store procedural code (i.e. functions) which is executed in response to messages sent to the frame by an application program.
One of the key concepts of artificial intelligence is that of inheritance. It is a development of the idea of using a hierarchical structure for relating frames in a knowledge base. The key to these structures is the concept of connecting relations between structures of data or knowledge through which information about slots may pass to other structures of data or knowledge.
The concept of representing knowledge as hierarchical data structures with inheritance was first referred to in terms of frames by its most prominent early supporter, Marvin Minsky of the Massachusetts Institute of Technology. Minsky gave the first general description of the concept and laid the intellectual groundwork for development of practical systems implementation of a frame-based system. Subsequent work in first generation knowledge representation systems produced very stylized inheritance mechanisms lacking in flexibility or yielding inheritance structures which were cumbersome and so slow as to be of only limited utility in large knowledge bases.
The concept of inheritance has a number of advantages. First, an inheritance mechanism allows the specification of many components of a data structure o knowledge structure through reference to other data structures or knowledge structures. High-level data structures or knowledge structures refer to organized collections of simpler data structures or knowledge structures, such as a collection of various relations in a relational database sense, or a collection of logical assertions as in the predicate calculus sense.
Second, an inheritance mechanism can assure consistency among high-level data or knowledge structures. That is, the inheritance mechanism can be used to specify that a given data or knowledge structure must obey restrictions placed on characteristics from other data or knowledge structures inherited from other data or knowledge structures.
Third, the inheritance mechanism allows the implementation of semantics. That is, the inheritance mechanism is a technique for combining higher level concepts and specifying meaning.
As described herein, inheritance search is performed by all functions which access slots and values when the slot or its values are not stored locally in the frame. Inheritance involves searching for a specific slot in a frame network starting at a particular frame and traversing connections from that frame to other frames.
For purposes of the present application, slots in a frame have both global and local behaviors. Global characteristics of a slot include:
Slot-type: whether the slot is an attribute, relation, or message. PA1 Value-type and cardinality: these characteristics may be specified for attribute slots; relation slots may have values which are pointers to other frames and allow multiple values; message slots may have a single value, which is a pointer to a function. PA1 the name of the inverse-relation of a relation slot. PA1 Demons, which can be attached to any type of slot. Demons are procedures automatically executed when a slot is accessed or modified. PA1 Inheritance characteristics of user-defined relations.
Other slot behaviors need not have global scope. In particular, a great deal of flexibility is provided in defining the following behaviors for slots:
In prior systems, the behaviors attached to a slot are either: 1) strictly global in scope, applying to the slot in all frames in which the slot appears, or 2) global in scope, with strictly local behavior overrides specifiable for the slot in a particular frame.
No prior system offers a clean, integrated set of features for specifying and inheriting slot behaviors. Some systems (e.g., Nexpert) offer strictly global specification of slot behavior. Others (e.g., Laser) offer strictly local attachment of behaviors. Knowledge Craft offers global specification of slot behaviors, strictly local overrides to global behaviors, and a switchable mode in which local overrides can be inherited.
However, the Knowledge Craft mechanism had a number of shortcomings: poor performance, a confusing mixture of paradigms which support base slot-control frames but not specialization slot-control frames; and a requirement that local specializations be specified via meta-information (auxiliary frames which could be attached to slots), thereby producing a confusing set of semantics in which meta-information is used both for the storage of user knowledge and for the storage of purely system information such as slot behaviors.